package com.github.mikephil.charting.TestSample;

import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.text.style.RelativeSizeSpan;
import android.text.style.StyleSpan;
import android.view.Gravity;
import android.widget.GridLayout;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
import com.github.mikephil.charting.formatter.PercentFormatter;
import com.github.mikephil.charting.highlight.Highlight;
import com.github.mikephil.charting.interfaces.datasets.IDataSet;
import com.github.mikephil.charting.listener.OnChartValueSelectedListener;

import java.util.ArrayList;

/**
 * Created by aierJun on 2017/4/4.
 */
public class PieChartUtils {
  /*  private Context context;
    private PieChart pieChart;
    private GridLayout legendLayout;
    private int[] colorsInts ;//颜色集合
    private String[] datas;//数据，可以是任何类型的数据，如String,int
    private ArrayList<String> nameList;
    private boolean first=true;


    public PieChartUtils(Context context, GridLayout legendLayout, PieChart pieChart, int[] colorsInts, String[] datas) {
        this.colorsInts = colorsInts;
        this.context = context;
        this.datas = datas;
        this.legendLayout = legendLayout;
        this.pieChart = pieChart;
    }

    public void initChart(float all, float one, float two, float three) {
        // 设置饼图是否接收点击事件，默认为true
        pieChart.setTouchEnabled(true);
        //设置饼图是否使用百分比
        pieChart.setUsePercentValues(true);
        //设置饼图右下角的文字描述
        pieChart.setDescription("");
        //设置饼图右下角的文字描述   文字位置
        pieChart.setDescriptionPosition(460,730);
        //设置饼图右下角的文字大小
        pieChart.setDescriptionTextSize(16);
        pieChart.setExtraOffsets(15, -20, 15, 0);//left   top  right  bottom

        //是否显示圆盘中间文字，默认显示
        pieChart.setDrawCenterText(true);
        pieChart.setHoleColor(Color.WHITE);//设置中间圆盘的颜色
        //设置圆盘中间文字
//        pieChart.setCenterText(generateCenterSpannableText());

        pieChart.setTransparentCircleColor(context.getResources().getColor(R.color.bantouming));
//        pieChart.setTransparentCircleAlpha(100);

        pieChart.setHoleRadius(30); //设置中间圆盘的半径,值为所占饼图的百分比
        pieChart.setTransparentCircleRadius(30); //设置中间透明圈的半径,值为所占饼图的百分比

        pieChart.setDrawCenterText(false);//饼状图中间可以添加文字

        //设置圆盘是否转动，默认转动
        pieChart.setRotationEnabled(false);
        //设置初始旋转角度
        pieChart.setRotationAngle(100);

//        //设置比例图
//        Legend mLegend = pieChart.getLegend();
//        //设置比例图显示在饼图的哪个位置
//        mLegend.setPosition(Legend.LegendPosition.BELOW_CHART_LEFT);
//        //设置比例图的形状，默认是方形,可为方形、圆形、线性
//        mLegend.setForm(Legend.LegendForm.SQUARE);
//        mLegend.setXEntrySpace(0f);//设置距离饼图的距离，防止与饼图重合
//        mLegend.setYEntrySpace(0f);
//        mLegend.setYOffset(0f);
//        //设置比例块换行...
//        mLegend.setWordWrapEnabled(true);

        if (first==true){
        customizeLegend();
        first=false;
        }

        //设置X轴动画
//        pieChart.animateX(1800);
//        //设置y轴动画
//        pieChart.animateY(1800);
//        //设置xy轴一起的动画
//        pieChart.animateXY(1800, 1800);

        //绑定数据
        bindData(3, all, one, two, three);

        // 设置一个选中区域监听
        pieChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
            @Override
            public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
//                pieChart.setDescription(datas[e.getXIndex()] + " " + (int)e.getVal() + "分");
            }
            @Override
            public void onNothingSelected() {
            }
        });
    }

    *//**
     *
     * @param count 分成几部分
     *//*
    private void bindData(int count,float all,float one,float two,float three) {
        *//**
         * nameList用来表示每个饼块上的文字内容
         * 如：部分一，部分二，部分三
         *//*

        ArrayList<String> nameList = new ArrayList<String>();

        for (int i = 0; i < count; i++) {
//            nameList.add("部分" + (i + 1));
            nameList.add("");
        }
        *//**
         * valueList将一个饼形图分成三部分，各个区域的百分比的值
         * Entry构造函数中
         * 第一个值代表所占比例，
         * 第二个值代表区域位置
         * （可以有第三个参数，表示携带的数据object）这里没用到
         *//*
        ArrayList<Entry> valueList = new ArrayList<Entry>();
        valueList.add(new Entry(one/all, 0));
        valueList.add(new Entry(two/all, 1));
        valueList.add(new Entry(three/all, 2));
//        valueList.add(new Entry(4, 3));
//        valueList.add(new Entry(6, 4));

        //显示在比例图上
        PieDataSet dataSet = new PieDataSet(valueList, "");
        //设置各个饼状图之间的距离
        dataSet.setSliceSpace(0f);
        // 部分区域被选中时多出的长度
        dataSet.setSelectionShift(5f);

        // 设置饼图各个区域颜色
        ArrayList<Integer> colors = new ArrayList<Integer>();
        for (int i=0;i<colorsInts.length;i++)
        colors.add(context.getResources().getColor(colorsInts[i]));
        dataSet.setColors(colors);

        PieData data = new PieData(nameList, dataSet);
        //设置以百分比显示
        data.setValueFormatter(new PercentFormatter());
        //区域文字的大小
        data.setValueTextSize(11f);
        //设置区域文字的颜色
        data.setValueTextColor(Color.WHITE);
        //设置区域文字的字体
        data.setValueTypeface(Typeface.DEFAULT);

        pieChart.setData(data);

        //设置是否显示区域文字内容
        pieChart.setDrawSliceText(pieChart.isDrawSliceTextEnabled());
        //设置是否显示区域百分比的值
        for (IDataSet<?> set : pieChart.getData().getDataSets()){
            set.setDrawValues(!set.isDrawValuesEnabled());
        }
        // undo all highlights
        pieChart.highlightValues(null);
        pieChart.invalidate();

    }

    //中间显示的文字数据
    private SpannableString generateCenterSpannableText() {
        SpannableString s = new SpannableString("信用分数\n769");
        s.setSpan(new RelativeSizeSpan(1.2f), 0, 4, 0);
        s.setSpan(new StyleSpan(Typeface.NORMAL), 0, 4, 0);
        s.setSpan(new ForegroundColorSpan(Color.BLACK), 0, 4, 0);
        s.setSpan(new RelativeSizeSpan(3.8f), 4, s.length(), 0);
        s.setSpan(new StyleSpan(Typeface.BOLD), 4, s.length(), 0);
        s.setSpan(new ForegroundColorSpan(Color.RED), 4, s.length(), 0);
        return s;
    }

    *//**
     * 定制图例，通过代码生成布局
     *//*
    private void customizeLegend(){
        Legend legend=pieChart.getLegend();//设置比例图
        legend.setEnabled(false);//图例不显示

        for(int i=0;i<datas.length;i++){
            LinearLayout.LayoutParams lp=new LinearLayout.
                    LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
            lp.weight=1;//设置比重为1
            LinearLayout layout=new LinearLayout(context);//单个图例的布局
            layout.setOrientation(LinearLayout.HORIZONTAL);//水平排列
            layout.setGravity(Gravity.CENTER_VERTICAL);//垂直居中
            layout.setLayoutParams(lp);

            //添加color
            LinearLayout.LayoutParams colorLP=new LinearLayout.
                    LayoutParams(20,20);
            colorLP.setMargins(30, 10, 10, 10);//int left, int top, int right, int bottom
            LinearLayout colorLayout=new LinearLayout(context);
            colorLayout.setLayoutParams(colorLP);
            colorLayout.setBackgroundColor(context.getResources().getColor(colorsInts[i]));
            layout.addView(colorLayout);

            //添加data
            TextView dataTV=new TextView(context);
            dataTV.setText(datas[i]+"");
            dataTV.setTextSize(12f);
            layout.addView(dataTV);

            legendLayout.addView(layout);//legendLayout为外层布局即整个图例布局，是在xml文件中定义

        }
    }

    private void customizeLegends(){
        Legend legend=pieChart.getLegend();//设置比例图
        legend.setEnabled(false);//图例不显示

        for(int i=0;i<datas.length;i++){
            LinearLayout.LayoutParams lp=new LinearLayout.
                    LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
            lp.weight=1;//设置比重为1
            LinearLayout layout=new LinearLayout(context);//单个图例的布局
            layout.setOrientation(LinearLayout.HORIZONTAL);//水平排列
            layout.setGravity(Gravity.CENTER_VERTICAL);//垂直居中
            layout.setLayoutParams(lp);

            //添加color
            LinearLayout.LayoutParams colorLP=new LinearLayout.
                    LayoutParams(20,20);
            colorLP.setMargins(0, 0, 20, 0);
            LinearLayout colorLayout=new LinearLayout(context);
            colorLayout.setLayoutParams(colorLP);
            colorLayout.setBackgroundColor(context.getResources().getColor(colorsInts[i]));
            layout.addView(colorLayout);

            //添加data
            TextView dataTV=new TextView(context);
            dataTV.setText(datas[i]+"");
            dataTV.setTextSize(12f);
            layout.addView(dataTV);

            legendLayout.addView(layout);//legendLayout为外层布局即整个图例布局，是在xml文件中定义

        }
    }*/
}
